Theorem: LO.FirstOrder.Arith.Model.fbit_defined (Arithmetization/ISigmaZero/Exponential/Log.lean)

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
⊢ 𝚺₀-Function₂ fbit via fbitDef
Tactic:
intro v
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
v : Fin (Nat.succ 2) → M
⊢ (fun v => v 0 = (fun v => fbit (v 0) (v 1)) fun x => v x.succ) v ↔ (Semiformula.Evalbm M v) (HSemiformula.val fbitDef)

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
v : Fin (Nat.succ 2) → M
⊢ (fun v => v 0 = (fun v => fbit (v 0) (v 1)) fun x => v x.succ) v ↔ (Semiformula.Evalbm M v) (HSemiformula.val fbitDef)
Tactic:
simp [fbitDef, ←le_iff_lt_succ, fbit, numeral_eq_natCast]
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
v : Fin (Nat.succ 2) → M
⊢ v 0 = v 1 / bexp (v 1) (v 2) % 2 ↔ ∃ x ≤ v 1, x = bexp (v 1) (v 2) ∧ ∃ x_1 ≤ v 1, x_1 = v 1 / x ∧ v 0 = x_1 % 2

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
v : Fin (Nat.succ 2) → M
⊢ v 0 = v 1 / bexp (v 1) (v 2) % 2 ↔ ∃ x ≤ v 1, x = bexp (v 1) (v 2) ∧ ∃ x_1 ≤ v 1, x_1 = v 1 / x ∧ v 0 = x_1 % 2
Tactic:
constructor
State after:
case mp
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
v : Fin (Nat.succ 2) → M
⊢ v 0 = v 1 / bexp (v 1) (v 2) % 2 → ∃ x ≤ v 1, x = bexp (v 1) (v 2) ∧ ∃ x_1 ≤ v 1, x_1 = v 1 / x ∧ v 0 = x_1 % 2

case mpr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
v : Fin (Nat.succ 2) → M
⊢ (∃ x ≤ v 1, x = bexp (v 1) (v 2) ∧ ∃ x_1 ≤ v 1, x_1 = v 1 / x ∧ v 0 = x_1 % 2) → v 0 = v 1 / bexp (v 1) (v 2) % 2

State before:
case mp
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
v : Fin (Nat.succ 2) → M
⊢ v 0 = v 1 / bexp (v 1) (v 2) % 2 → ∃ x ≤ v 1, x = bexp (v 1) (v 2) ∧ ∃ x_1 ≤ v 1, x_1 = v 1 / x ∧ v 0 = x_1 % 2
Tactic:
intro h
State after:
case mp
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
v : Fin (Nat.succ 2) → M
h : v 0 = v 1 / bexp (v 1) (v 2) % 2
⊢ ∃ x ≤ v 1, x = bexp (v 1) (v 2) ∧ ∃ x_1 ≤ v 1, x_1 = v 1 / x ∧ v 0 = x_1 % 2

State before:
case mp
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
v : Fin (Nat.succ 2) → M
h : v 0 = v 1 / bexp (v 1) (v 2) % 2
⊢ ∃ x ≤ v 1, x = bexp (v 1) (v 2) ∧ ∃ x_1 ≤ v 1, x_1 = v 1 / x ∧ v 0 = x_1 % 2
Tactic:
exact ⟨bexp (v 1) (v 2), by simp, rfl, _, by simp, rfl, h⟩
State after:
no goals

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
v : Fin (Nat.succ 2) → M
h : v 0 = v 1 / bexp (v 1) (v 2) % 2
⊢ bexp (v 1) (v 2) ≤ v 1
Tactic:
simp
State after:
no goals

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
v : Fin (Nat.succ 2) → M
h : v 0 = v 1 / bexp (v 1) (v 2) % 2
⊢ v 1 / bexp (v 1) (v 2) ≤ v 1
Tactic:
simp
State after:
no goals

State before:
case mpr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
v : Fin (Nat.succ 2) → M
⊢ (∃ x ≤ v 1, x = bexp (v 1) (v 2) ∧ ∃ x_1 ≤ v 1, x_1 = v 1 / x ∧ v 0 = x_1 % 2) → v 0 = v 1 / bexp (v 1) (v 2) % 2
Tactic:
rintro ⟨_, _, rfl, _, _, rfl, h⟩
State after:
case mpr.intro.intro.intro.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
v : Fin (Nat.succ 2) → M
left✝¹ : bexp (v 1) (v 2) ≤ v 1
left✝ : v 1 / bexp (v 1) (v 2) ≤ v 1
h : v 0 = v 1 / bexp (v 1) (v 2) % 2
⊢ v 0 = v 1 / bexp (v 1) (v 2) % 2

State before:
case mpr.intro.intro.intro.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
v : Fin (Nat.succ 2) → M
left✝¹ : bexp (v 1) (v 2) ≤ v 1
left✝ : v 1 / bexp (v 1) (v 2) ≤ v 1
h : v 0 = v 1 / bexp (v 1) (v 2) % 2
⊢ v 0 = v 1 / bexp (v 1) (v 2) % 2
Tactic:
exact h
State after:
no goals