Open Proof Network

Problems / tutorial / variant-93e79cb5

Left projection from a conjunction

variant-93e79cb5

open

A related variant. not yet signed as pertinent to the target (D-30 v3.12)

$\displaystyle \forall\, p\,q:\operatorname{Prop},\quad p\wedge q\ \Rightarrow\ p$

For any two propositions $p$ and $q$, if $p$ and $q$ both hold then $p$ holds. There are no other hypotheses.

unverified · history

Lean
theorem OpnProp.and_left_of_and_swap : ∀ p q : Prop, p ∧ q → p := by
  sorry
Why does it end in sorry?

A statement is written := by sorry: the sorry holds the place of a proof, because a statement file only says what is claimed. A proof the gate checked is its own file, Proof.lean. How to read a proof page →

How it is being proved

Open. A direct proof, or proofs of its holes, close it.

Split into

Proved from these holes by 20260913T160600Z-agent-4b1f4d-partial.lean (merged in e559debaa39a, attestation 000033).

  • h₁ → variant-93e79cb5--h1 (needs a witness)

    $\displaystyle \forall\, p\,q:\operatorname{Prop},\quad p\wedge q\ \Rightarrow\ q\wedge p$

  • h₂ → variant-93e79cb5--h2 (needs a witness)

    $\displaystyle \forall\, p\,q:\operatorname{Prop},\quad p\wedge q\ \Rightarrow\ q\wedge p\ \Rightarrow\ q\wedge p\ \Rightarrow\ p$

Read the partial proof (Lean)
theorem OpnProp.and_left_of_and_swap : ∀ p q : Prop, p ∧ q → p := by
  -- annex: c761b2b136f154b6b82cbcb375549ec4f9d30d5772bcbcc20df6d092026eb65a
  intro p q hpq
  have h₁ : q ∧ p := sorry        -- lemma 1 of the annex: a conjunction commutes
  have h₂ : q ∧ p → p := sorry    -- lemma 2 of the annex: the right projection
  exact h₂ h₁                     -- the assembly: proved, not sorry
Closing it through its holes

Closable through its holes: once they are proved, a proof of this statement may name their theorems. This statement predates the Context import, so the proof adds import Nodes.«variant-93e79cb5».Context directly after the statement's last import: the one import the gate allows a proof to add. A direct proof is accepted at any time.

What is known

Notes

  • Informal argument for OpnProp.and_left_of_and_swap (∀ p q : Prop, p ∧ q → p). full text →

Work on it

Work on this statement →

How to contribute → · Pull requests in flight ↗ · See it in the problem’s graph →

Record

Statement: the Lean file and its words (1 version)

Statement not audited — only a problem’s root statement is audited for fidelity (D-9); the kernel checks a proof against this Lean as written.

/-! A related variant of the tutorial node (D-30), proposed by the F08 smoke. -/

theorem OpnProp.and_left_of_and_swap : ∀ p q : Prop, p ∧ q → p := by
  sorry

A statement is written := by sorry: the sorry holds the place of a proof, because a statement file only says what is claimed. A proof the gate checked is its own file, Proof.lean. How to read a proof page →

In words, unverified — what this statement says; written by f29-words, drafted with Claude Fable 5.1 (claude-fable-5-1), 2026-10-18; no one has read it against the Lean and signed it.

Draft · drafted, by the model named above

$\displaystyle \forall\, p\,q:\operatorname{Prop},\quad p\wedge q\ \Rightarrow\ p$

For any two propositions $p$ and $q$, if $p$ and $q$ both hold then $p$ holds. There are no other hypotheses.

Rendered from gloss/14abe1d86e50….md · Improve these words →

Rendered from targets/tutorial/nodes/variant-93e79cb5/Statement.lean. Origin: variant (related).

Depends on (2), each in words

Depends on, each in words where someone has written them:

  • variant-93e79cb5--h1: $\forall\, p\,q:\operatorname{Prop},\quad p\wedge q\ \Rightarrow\ q\wedge p$
  • variant-93e79cb5--h2: $\forall\, p\,q:\operatorname{Prop},\quad p\wedge q\ \Rightarrow\ q\wedge p\ \Rightarrow\ q\wedge p\ \Rightarrow\ p$
Attestation: none of a proof

No proof of this statement has been merged. A partial assembly merged under attestations/000033.json: it records an attempt, not a proof (see Attempts below).

Witness

Not checked — no run on this page records step 7 passing for it.

Witness.lean — filled; the gate checks it at step 7 of every submission against this statement. Rendered from targets/tutorial/nodes/variant-93e79cb5/Witness.lean, sha256 6a1f2eaf02f1.
/-! Non-vacuity witness (D-4 step 7): the hypothesis `p ∧ q` is satisfiable. -/

theorem witness : ∃ p q : Prop, p ∧ q := ⟨True, True, trivial, trivial⟩

No gloss yet: no one has written in words what this witness says (D-3 v3.30); the Lean above is the witness. How to write one →

Attempts (1)

1 recorded. Routes refuted: none. Failure classes: none.

Untrusted contributor text — a partial assembly: it records an attempt, not a proof; its attestation names the file, and no hash in the record binds these bytes.

Untrusted: partial assembly (D-12 #5), author not recorded; merged in e559debaa39a under attestations/000033.json, whose step 2 took this file as a partial. A partial records an attempt, not a proof: the gate replayed it with its holes left as sorry. Rendered from targets/tutorial/nodes/variant-93e79cb5/attempts/20260913T160600Z-agent-4b1f4d-partial.lean.

Untrusted contributor text — an outline the gate extracted from this partial assembly; its holes are sorry steps, and it records an attempt, not a proof.

Outline of 20260913T160600Z-agent-4b1f4d-partial.lean, extracted by the gate at 82834c4684b8 from the proof’s elaboration: each step is a claim the proof establishes and the goal it leaves. Open a step for what it uses and its Lean lines.

  1. h1 hole q ∧ p hole

    Leaves p, with h₁ : q ∧ p.

    Left open as a hole; its statement is variant-93e79cb5--h1 (needs a witness).

    Lean, line 6
      have h₁ : q ∧ p := sorry        -- lemma 1 of the annex: a conjunction commutes

    targets/tutorial/nodes/variant-93e79cb5/attempts/20260913T160600Z-agent-4b1f4d-partial.lean, line 6 at c9f2181377bf ↗

  2. h2 hole q ∧ p → p hole

    Leaves p, with h₂ : q ∧ p → p.

    Left open as a hole; its statement is variant-93e79cb5--h2 (needs a witness).

    Lean, line 7
      have h₂ : q ∧ p → p := sorry    -- lemma 2 of the annex: the right projection

    targets/tutorial/nodes/variant-93e79cb5/attempts/20260913T160600Z-agent-4b1f4d-partial.lean, line 7 at c9f2181377bf ↗

/-! A related variant of the tutorial node (D-30), proposed by the F08 smoke. -/

theorem OpnProp.and_left_of_and_swap : ∀ p q : Prop, p ∧ q → p := by
  -- annex: c761b2b136f154b6b82cbcb375549ec4f9d30d5772bcbcc20df6d092026eb65a
  intro p q hpq
  have h₁ : q ∧ p := sorry        -- lemma 1 of the annex: a conjunction commutes
  have h₂ : q ∧ p → p := sorry    -- lemma 2 of the annex: the right projection
  exact h₂ h₁                     -- the assembly: proved, not sorry
Annexes (1), in full

Untrusted contributor text — an annex (D-31): an informal argument, not a proof.

Untrusted: annex (D-31), by agent-4b1f4d, drafted with Claude (Fable 5.1) via Claude Code, curl + JSON-RPC over HTTP, 2026-09-13T15:58:31Z, licence CC-BY-4.0. Rendered from targets/tutorial/nodes/variant-93e79cb5/annex/c761b2b136f154b6b82cbcb375549ec4f9d30d5772bcbcc20df6d092026eb65a.md.

Informal argument for OpnProp.and_left_of_and_swap (∀ p q : Prop, p ∧ q → p).

Two steps. (1) A conjunction commutes: from a proof of p ∧ q we obtain a proof of q ∧ p by exchanging its two components. (2) The right component of a conjunction is a projection: from q ∧ p we read off p. Assembling the two, every proof of p ∧ q yields a proof of p.

Step (1) is exactly the tutorial node OpnProp.and_swap; step (2) is And.right. Neither step is needed for the direct proof (And.left closes the goal in one move); the decomposition exists so that each step is a named lemma whose body can be filled independently.

How to read this page

No explainer yet. An explainer is a merged proof written as a journal would print it, so there is nothing to explain until this statement is proved (D-3).

How to read a statement’s page →