Prover winning the GL-split game builds a GL-split proof. #
If Prover has a winning strategy in the game starting from Γ, then there is a proof of Γ, proven
in prover_win_builds_proof, all other definitions and proofs in this file are helpers.
Rewinding the history one step is still in the cone of the game.
Rewinding the history n steps.
Equations
- Split.rewind_history g n = match n_def : ↑n with | 0 => g | m.succ => Split.rewind_history (Split.rewind_history_one_step g ⋯) ⟨m, ⋯⟩
Instances For
Rewinding the history n steps is still in the cone of the game.
This is the type of the coalgebra we will use to build the proof of Γ.
Equations
- Split.proof_type Γ strat = { g : Game.Pos // inMyCone strat (Split.startPos Γ) g ∧ Game.turn g = Split.Builder }
Instances For
Defines the premise when we do not have a repeat.
Equations
Instances For
The sequent at the premise defined by next_next is the sequent Δ which we expect.
Comparison of rule app history length and sequent history length.
Defines the premise when we do not have a repeat.
Equations
Instances For
Rewinding the game one step changes the player.
The sequent at the one step rewind can be found in the history.
The sequent at the n step rewind can be found in the history.
Defines the premise when we have a repeat.
Equations
- Split.rep_next Γ g rep = ⟨Split.rep_pos g rep, ⋯⟩
Instances For
The sequent at the premise defined by rep_next is the sequent Δ which we expect.
Define the list of premises from a Builder move.
Equations
- One or more equations did not get rendered due to their size.
- Split.builder_move_premises ⟨(Sum.inl val, fst, snd), ⋯⟩ h = ⋯.elim
- Split.builder_move_premises ⟨(Sum.inr (Split.RuleApp.topₗ Δ a), Γs, Rs), property_2⟩ h = []
- Split.builder_move_premises ⟨(Sum.inr (Split.RuleApp.topᵣ Δ a), Γs, Rs), property_2⟩ h = []
- Split.builder_move_premises ⟨(Sum.inr (Split.RuleApp.axₗₗ Δ n a), Γs, Rs), property_2⟩ h = []
- Split.builder_move_premises ⟨(Sum.inr (Split.RuleApp.axₗᵣ Δ n a), Γs, Rs), property_2⟩ h = []
- Split.builder_move_premises ⟨(Sum.inr (Split.RuleApp.axᵣₗ Δ n a), Γs, Rs), property_2⟩ h = []
- Split.builder_move_premises ⟨(Sum.inr (Split.RuleApp.axᵣᵣ Δ n a), Γs, Rs), property_2⟩ h = []
Instances For
If Prover has a winning strategy in the game starting from Γ, then there is a proof of Γ.
Builder winning the GL-split game builds a GL-model. #
If Builder has a winning strategy in the game starting from Γ, then there is a proof of Γ, proven
in builder_win_builds_model, all other definitions and proofs in this file are helpers.
Equations
- Split.non_box_move x y = (Split.Move x y ∧ ¬Split.is_box y)
Instances For
- chain : List.IsChain non_box_move self.list
- max : ¬∃ (z : Game.Pos), non_box_move (self.list.getLast ⋯) z
Instances For
Instances For
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Equations
Instances For
Two maximal paths are related if two steps in the game can connect tail to head.
Equations
- Split.path_relation Γ strat π₁ π₂ = Relation.Comp Split.Move Split.Move π₁.last π₂.first
Instances For
Interesting for MathLib?
Builds the counter-model from a Builder winning strategy.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If Builder wins, no formula in the sequents at Prover positions evaluates to true.
If Builder wins, there exists a counter-model.
Completeness! Comes as a corrolary of gamedet, prover_win_builds_proof, and
builder_win_builds_model.
Corollary of completeness_sseq, used in Interpolants.lean