diff --git a/encodings/bool_hol.lp b/encodings/bool_hol.lp
index 58ac1527e2dc8572817f0c0364f07ab7687fe473..266cf78272f0224f106c0b3199faf03fac5b9a6a 100644
--- a/encodings/bool_hol.lp
+++ b/encodings/bool_hol.lp
@@ -25,10 +25,15 @@ set builtin "or"  ≔ or
 symbol if {s: Set} p: (Prf p → El s) → (Prf (¬ p) → El s) → El s
 rule if {bool} $p $then $else ↪ ($p ⊃ $then) ⊃ (λ_, (¬ $p) ⊃ $else)
 
+definition iff P Q ≔ (P ⊃ (λ_, Q)) ∧ ((λ_, Q ⊃ (λ_, P)))
+
 symbol eq {s: Set}: El s → El s → El bool
 set infix 2 "=" ≔ eq
 set builtin "eq" ≔ eq // FIXME emacs indentation
 
 rule Prf ($x = $y) ↪ Πp: El (_ ~> bool), Prf (p $x) → Prf (p $y)
-
-definition iff P Q ≔ (P ⊃ (λ_, Q)) ∧ ((λ_, Q ⊃ (λ_, P)))
+theorem eq_refl {a: Set} (x: El a): Prf (x = x)
+proof
+  assume a x p h
+  apply h
+qed
diff --git a/paper/proof_irr.lp b/paper/proof_irr.lp
new file mode 100644
index 0000000000000000000000000000000000000000..45548f6fd5c3c8c6060e20ada83c709b04c7a39e
--- /dev/null
+++ b/paper/proof_irr.lp
@@ -0,0 +1,56 @@
+require open personoj.encodings.lhol
+require open personoj.encodings.pvs_cert
+require open personoj.encodings.bool_hol
+
+
+set declared "â„•"
+constant symbol â„•: Set
+constant symbol z: El â„•
+constant symbol s (_: El â„•): El â„•
+constant symbol leq: El ℕ → El ℕ → Bool
+set infix left 3 "≤" ≔ leq
+
+// Agda manual
+symbol p1: Prf (z ≤ s z)
+symbol p2: Prf (z ≤ s z)
+definition bounded (k: El ℕ) ≔ psub (λn, n ≤ k)
+
+constant symbol slist (bound: El â„•): Set
+constant symbol snil (bound: El â„•): El (slist bound)
+constant symbol scons {bound: El â„•} (head: El (bounded bound))
+                      (tail: El (slist (fst head)))
+              : El (slist bound)
+
+set declared "l₁"
+set declared "lâ‚‚"
+definition l₁: El (slist (s z)) ≔ scons (pair z p1) (snil z)
+definition l₂: El (slist (s z)) ≔ scons (pair z p2) (snil z)
+
+theorem listeq: Prf (l₁ = l₂)
+proof
+  refine eq_refl l₁
+qed
+
+// Proof irrelevance without K
+symbol plus: El ℕ → El ℕ → El ℕ
+set infix left 10 "+" ≔ plus
+
+constant symbol even_p: El ℕ → Bool
+definition even ≔ psub even_p
+
+symbol plus_closed_even (n m: El even): Prf (even_p ((fst n) + (fst m)))
+
+definition add (n m: El even) : El even
+         ≔ pair ((fst n) + (fst m)) (plus_closed_even n m)
+
+symbol app_thm (a b: Set) (f: El (a ~> b))
+               (x y: El a) (_: Prf (x = y))
+     : Prf (f x = f y)
+
+symbol fun_ext (a b: Set) (f g: El (a ~> b)) (_: Prf (∀ (λx, f x = g x))): Prf (f = g)
+
+symbol plus_commutativity (n m: El â„•): Prf (n + m = m + n)
+
+theorem even_add_commutativity (n m: El even): Prf (add n m = add m n)
+proof
+admit