mod_cases tactic #
The mod_cases tactic does case disjunction on e % n, where e : ℤ or e : ℕ,
to yield n new subgoals corresponding to the possible values of e modulo n.
OnModCases n a lb p represents a partial proof by cases that
there exists 0 ≤ z < n such that a ≡ z (mod n).
It asserts that if ∃ z, lb ≤ z < n ∧ a ≡ z (mod n) holds, then p
(where p is the current goal).
Equations
Instances For
The first theorem we apply says that ∃ z, 0 ≤ z < n ∧ a ≡ z (mod n).
The actual mathematical content of the proof is here.
Equations
- Mathlib.Tactic.ModCases.IntMod.onModCases_start p a n hn H = H (a % ↑n).toNat ⋯
Instances For
The end point is that once we have reduced to ∃ z, n ≤ z < n ∧ a ≡ z (mod n)
there are no more cases to consider.
Equations
- Mathlib.Tactic.ModCases.IntMod.onModCases_stop p n a x✝ h = ⋯.elim
Instances For
The successor case decomposes ∃ z, b ≤ z < n ∧ a ≡ z (mod n) into
a ≡ b (mod n) ∨ ∃ z, b+1 ≤ z < n ∧ a ≡ z (mod n),
and the a ≡ b (mod n) → p case becomes a subgoal.
Equations
- Mathlib.Tactic.ModCases.IntMod.onModCases_succ b h H z ⋯ = if e : b = z then h ⋯ else H z ⋯
Instances For
Proves an expression of the form OnModCases n a b p where n and b are raw nat literals
and b ≤ n. Returns the list of subgoals ?gi : a ≡ i [ZMOD n] → p.
Int case of mod_cases h : e % n.
Equations
- One or more equations did not get rendered due to their size.
Instances For
OnModCases n a lb p represents a partial proof by cases that
there exists 0 ≤ m < n such that a ≡ m (mod n).
It asserts that if ∃ m, lb ≤ m < n ∧ a ≡ m (mod n) holds, then p
(where p is the current goal).
Equations
Instances For
The first theorem we apply says that ∃ m, 0 ≤ m < n ∧ a ≡ m (mod n).
The actual mathematical content of the proof is here.
Equations
- Mathlib.Tactic.ModCases.NatMod.onModCases_start p a n hn H = H (a % n) ⋯
Instances For
The end point is that once we have reduced to ∃ m, n ≤ m < n ∧ a ≡ m (mod n)
there are no more cases to consider.
Equations
- Mathlib.Tactic.ModCases.NatMod.onModCases_stop p n a x✝ h = ⋯.elim
Instances For
The successor case decomposes ∃ m, b ≤ m < n ∧ a ≡ m (mod n) into
a ≡ b (mod n) ∨ ∃ m, b+1 ≤ m < n ∧ a ≡ m (mod n),
and the a ≡ b (mod n) → p case becomes a subgoal.
Equations
- Mathlib.Tactic.ModCases.NatMod.onModCases_succ b h H z ⋯ = if e : b = z then h ⋯ else H z ⋯
Instances For
Proves an expression of the form OnModCases n a b p where n and b are raw nat literals
and b ≤ n. Returns the list of subgoals ?gi : a ≡ i [MOD n] → p.
Nat case of mod_cases h : e % n.
Equations
- One or more equations did not get rendered due to their size.
Instances For
mod_cases h : e % n, where n is a positive numeral and e is an expression of type ℕ or ℤ,
performs a case disjunction on the value of e modulo n. If e : ℤ, the goal is split into
n subgoals containing the new hypotheses h : e ≡ 0 [ZMOD n], ..., h : e ≡ n-1 [ZMOD n]
respectively. If e : ℕ instead, then the hypotheses contain [MOD n] instead of [ZMOD n].
mod_cases e % n, withhomitted, gives the default nameHto the new hypotheses.
Equations
- One or more equations did not get rendered due to their size.