40 lines
1.4 KiB
Text
40 lines
1.4 KiB
Text
inductive Formula : Nat → Type u where
|
|
| bot : Formula n
|
|
| imp (f₁ f₂ : Formula n ) : Formula n
|
|
| all (f : Formula (n+1)) : Formula n
|
|
|
|
def Formula.count_quantifiers : {n:Nat} → Formula n → Nat
|
|
| _, imp f₁ f₂ => f₁.count_quantifiers + f₂.count_quantifiers
|
|
| _, all f => f.count_quantifiers + 1
|
|
| _, _ => 0
|
|
|
|
attribute [simp] Formula.count_quantifiers
|
|
|
|
/--
|
|
info: Formula.count_quantifiers.eq_1.{u_1} :
|
|
∀ (x : Nat) (f₁ f₂ : Formula x),
|
|
Formula.count_quantifiers (Formula.imp f₁ f₂) = Formula.count_quantifiers f₁ + Formula.count_quantifiers f₂
|
|
-/
|
|
#guard_msgs in
|
|
#check Formula.count_quantifiers.eq_1
|
|
|
|
/--
|
|
info: Formula.count_quantifiers.eq_2.{u_1} :
|
|
∀ (x : Nat) (f : Formula (x + 1)), Formula.count_quantifiers (Formula.all f) = Formula.count_quantifiers f + 1
|
|
-/
|
|
#guard_msgs in
|
|
#check Formula.count_quantifiers.eq_2
|
|
|
|
/--
|
|
info: Formula.count_quantifiers.eq_3.{u_1} :
|
|
∀ (x : Nat) (x_1 : Formula x),
|
|
(∀ (f₁ f₂ : Formula x), x_1 = Formula.imp f₁ f₂ → False) →
|
|
(∀ (f : Formula (x + 1)), x_1 = Formula.all f → False) → Formula.count_quantifiers x_1 = 0
|
|
-/
|
|
#guard_msgs in
|
|
#check Formula.count_quantifiers.eq_3
|
|
|
|
@[simp] def Formula.count_quantifiers2 : Formula n → Nat
|
|
| imp f₁ f₂ => f₁.count_quantifiers2 + f₂.count_quantifiers2
|
|
| all f => f.count_quantifiers2 + 1
|
|
| _ => 0
|