Formula

Difficulty: easy — 3 definitions, 1 abbreviations, 0 lemmas, 0 theorems, 0 examples.

definition abbreviation
legend

The syntax and semantics of classical propositional logic: formulas built from atomic propositions and the four connectives negation, conjunction, disjunction, and implication, and the truth table each formula computes.

A propositional formula over a type \(\alpha\) of atomic propositions. Built from an atom, or from a smaller formula (or two) by one of the four connectives: negation, conjunction, disjunction, and implication.

inductive Logic.PropositionalLogic.Formula (α : Type) : Type
  • atom : α  Logic.PropositionalLogic.Formula α
  • neg : Logic.PropositionalLogic.Formula α  Logic.PropositionalLogic.Formula α
  • and : Logic.PropositionalLogic.Formula α 
    Logic.PropositionalLogic.Formula α  Logic.PropositionalLogic.Formula α
  • or : Logic.PropositionalLogic.Formula α 
    Logic.PropositionalLogic.Formula α  Logic.PropositionalLogic.Formula α
  • imp : Logic.PropositionalLogic.Formula α 
    Logic.PropositionalLogic.Formula α  Logic.PropositionalLogic.Formula α
Show details

Outer dependencies: (none)

Lean core dependencies: Eq, HEq, Nat, Nat.ble, Nat.decEq, Not, PProd, PULift, PUnit, SizeOf, cond, dite, eq_of_heq

Used by: Logic.PropositionalLogic.Formula.Derivable, Logic.PropositionalLogic.Formula.Derivable.ax, Logic.PropositionalLogic.Formula.Derivable.case_split, Logic.PropositionalLogic.Formula.Derivable.deduction, Logic.PropositionalLogic.Formula.Derivable.deduction_aux, Logic.PropositionalLogic.Formula.Derivable.provable_of_nil, Logic.PropositionalLogic.Formula.Derivable.toProofSystem, Logic.PropositionalLogic.Formula.Derivable.weaken, Logic.PropositionalLogic.Formula.Provable, Logic.PropositionalLogic.Formula.Provable.andElim1, Logic.PropositionalLogic.Formula.Provable.andElim2, Logic.PropositionalLogic.Formula.Provable.andIntro, Logic.PropositionalLogic.Formula.Provable.dne, Logic.PropositionalLogic.Formula.Provable.k, Logic.PropositionalLogic.Formula.Provable.mp, Logic.PropositionalLogic.Formula.Provable.negIntro, Logic.PropositionalLogic.Formula.Provable.orElim, Logic.PropositionalLogic.Formula.Provable.orIntro1, Logic.PropositionalLogic.Formula.Provable.orIntro2, Logic.PropositionalLogic.Formula.Provable.s, Logic.PropositionalLogic.Formula.SemanticEntails, Logic.PropositionalLogic.Formula.SemanticEntails.refl, Logic.PropositionalLogic.Formula.SemanticEntails.trans, Logic.PropositionalLogic.Formula.SyntacticEntails, Logic.PropositionalLogic.Formula.SyntacticEntails.refl, Logic.PropositionalLogic.Formula.SyntacticEntails.trans, Logic.PropositionalLogic.Formula.Tautology, Logic.PropositionalLogic.Formula.and_entails_left, Logic.PropositionalLogic.Formula.and_entails_left_syntactic, Logic.PropositionalLogic.Formula.and_entails_right, Logic.PropositionalLogic.Formula.and_entails_right_syntactic, Logic.PropositionalLogic.Formula.bigAnd, Logic.PropositionalLogic.Formula.bigAnd_val, Logic.PropositionalLogic.Formula.bigOr, Logic.PropositionalLogic.Formula.bigOr_val, Logic.PropositionalLogic.Formula.case_split, Logic.PropositionalLogic.Formula.completeness, Logic.PropositionalLogic.Formula.demonstrate_bigAnd_cons, Logic.PropositionalLogic.Formula.demonstrate_bigOr_cons, Logic.PropositionalLogic.Formula.demonstrate_semantic_iff_syntactic, Logic.PropositionalLogic.Formula.dnf, Logic.PropositionalLogic.Formula.dnf_val, Logic.PropositionalLogic.Formula.eliminate, Logic.PropositionalLogic.Formula.entails_and_iff, Logic.PropositionalLogic.Formula.entails_and_iff_syntactic, Logic.PropositionalLogic.Formula.entails_of_and_cases_syntactic, Logic.PropositionalLogic.Formula.entails_of_entails_neg_contra, Logic.PropositionalLogic.Formula.entails_of_entails_neg_contra_syntactic, Logic.PropositionalLogic.Formula.entails_of_or_cases_syntactic, Logic.PropositionalLogic.Formula.exists_andOrNot_of_boolFun, Logic.PropositionalLogic.Formula.falsum', Logic.PropositionalLogic.Formula.kalmar, Logic.PropositionalLogic.Formula.lift_provable, Logic.PropositionalLogic.Formula.literal, Logic.PropositionalLogic.Formula.literal_val, Logic.PropositionalLogic.Formula.minterm, Logic.PropositionalLogic.Formula.minterm_val, Logic.PropositionalLogic.Formula.nand, Logic.PropositionalLogic.Formula.or_entails_left, Logic.PropositionalLogic.Formula.or_entails_left_syntactic, Logic.PropositionalLogic.Formula.or_entails_right, Logic.PropositionalLogic.Formula.or_entails_right_syntactic, Logic.PropositionalLogic.Formula.provable_contrapose, Logic.PropositionalLogic.Formula.provable_deMorgan_or, Logic.PropositionalLogic.Formula.provable_dni, Logic.PropositionalLogic.Formula.provable_explosion, Logic.PropositionalLogic.Formula.provable_lem, Logic.PropositionalLogic.Formula.provable_self_imp, Logic.PropositionalLogic.Formula.semantic_iff_provable, Logic.PropositionalLogic.Formula.soundness, Logic.PropositionalLogic.Formula.starred, Logic.PropositionalLogic.Formula.syntactic_iff_provable, Logic.PropositionalLogic.Formula.val, Logic.PropositionalLogic.Formula.verum', Logic.PropositionalLogic.HilbertSchema, Logic.PropositionalLogic.HilbertSchema.isAxiom_of_ne_mp, Logic.PropositionalLogic.HilbertSchema.mp_isSimple, Logic.PropositionalLogic.NandFormula.exists_nand_of_boolFun, Logic.PropositionalLogic.NandFormula.ofFormula, Logic.PropositionalLogic.NandFormula.ofFormula_val, Logic.PropositionalLogic.NandFormula.toFormula, Logic.PropositionalLogic.derivable_mp, Logic.PropositionalLogic.derivation_of_axiom, Logic.PropositionalLogic.hilbert, Logic.PropositionalLogic.semanticBasis3, Logic.PropositionalLogic.semanticConnectives, Logic.PropositionalLogic.syntacticBasis3, Logic.PropositionalLogic.syntacticConnectives

An assignment of a truth value to every atom.

abbrev Logic.PropositionalLogic.Valuation (α : Type) : Type
Show details
| Logic.PropositionalLogic.Valuation α = (α  Bool)

Complexity: 5 (size of the value term)

Outer dependencies: (none)

Lean core dependencies: Bool

Used by: Logic.PropositionalLogic.Formula.SemanticEntails, Logic.PropositionalLogic.Formula.SemanticEntails.refl, Logic.PropositionalLogic.Formula.SemanticEntails.trans, Logic.PropositionalLogic.Formula.Tautology, Logic.PropositionalLogic.Formula.and_entails_left, Logic.PropositionalLogic.Formula.and_entails_right, Logic.PropositionalLogic.Formula.bigAnd_val, Logic.PropositionalLogic.Formula.bigOr_val, Logic.PropositionalLogic.Formula.completeness, Logic.PropositionalLogic.Formula.dnf, Logic.PropositionalLogic.Formula.dnf_val, Logic.PropositionalLogic.Formula.eliminate, Logic.PropositionalLogic.Formula.entails_and_iff, Logic.PropositionalLogic.Formula.entails_of_entails_neg_contra, Logic.PropositionalLogic.Formula.exists_andOrNot_of_boolFun, Logic.PropositionalLogic.Formula.kalmar, Logic.PropositionalLogic.Formula.literal, Logic.PropositionalLogic.Formula.literal_val, Logic.PropositionalLogic.Formula.minterm, Logic.PropositionalLogic.Formula.minterm_val, Logic.PropositionalLogic.Formula.or_entails_left, Logic.PropositionalLogic.Formula.or_entails_right, Logic.PropositionalLogic.Formula.semantic_iff_provable, Logic.PropositionalLogic.Formula.soundness, Logic.PropositionalLogic.Formula.starred, Logic.PropositionalLogic.Formula.val, Logic.PropositionalLogic.Formula.val_falsum', Logic.PropositionalLogic.Formula.val_verum', Logic.PropositionalLogic.NandFormula.exists_nand_of_boolFun, Logic.PropositionalLogic.NandFormula.ofFormula_val, Logic.PropositionalLogic.NandFormula.toFormula_val, Logic.PropositionalLogic.NandFormula.val, Logic.PropositionalLogic.semanticConnectives

The truth value of a formula under a valuation: the truth table, computed structurally. Each connective’s clause is definitionally its usual truth-table rule, so it needs no separate lemma to unfold — plain simp already knows it.

def Logic.PropositionalLogic.Formula.val {α : Type} (v : Logic.PropositionalLogic.Valuation α) :
  Logic.PropositionalLogic.Formula α  Bool
Show details
| Logic.PropositionalLogic.Formula.val v (Logic.PropositionalLogic.Formula.atom a) = v a
| Logic.PropositionalLogic.Formula.val v φ.neg = !Logic.PropositionalLogic.Formula.val v φ
| Logic.PropositionalLogic.Formula.val v (φ.and ψ) =
  (Logic.PropositionalLogic.Formula.val v φ && Logic.PropositionalLogic.Formula.val v ψ)
| Logic.PropositionalLogic.Formula.val v (φ.or ψ) =
  (Logic.PropositionalLogic.Formula.val v φ || Logic.PropositionalLogic.Formula.val v ψ)
| Logic.PropositionalLogic.Formula.val v (φ.imp ψ) =
  (!Logic.PropositionalLogic.Formula.val v φ || Logic.PropositionalLogic.Formula.val v ψ)

Complexity: 27 (size of the value term)

Lean core dependencies: Bool, Bool.and, Bool.not, Bool.or, Eq, Eq.mpr, Eq.symm, PProd, PUnit, congrArg, id

A tautology: true under every valuation.

def Logic.PropositionalLogic.Formula.Tautology {α : Type} (φ : Logic.PropositionalLogic.Formula α) :
  Prop
Show details
| φ.Tautology =
   (v : Logic.PropositionalLogic.Valuation α), Logic.PropositionalLogic.Formula.val v φ = true

Complexity: 23 (size of the value term)

Outer dependencies: Logic.PropositionalLogic.Formula

Lean core dependencies: Bool, Eq

Dependency diagram

Drag to pan, Ctrl+scroll (or Cmd+scroll, or pinch on a touch screen) to zoom, click a node to jump to it.

definitionabbreviationdeclared elsewheredependencyproof dependency
legend