@typememetics Progress and preservation is a proof technique for the safety of a type system, not the definition of it. A type system can be safe without satisfying progress and preservation.
@blackenedgold https://t.co/P7Tmvcsamr
이 논문에서 조사한 바에 따르면 Rocq의 커널은 OCaml 41K줄, Lean의 커널은 C++ 8K 줄 이라고 합니다. C++ 보다는 OCaml이 더 신뢰할 수 있는 언어지만 5배 라인 수 차이가 나면 Rocq이 Lean보다 trust base의 크기 측면에서 더 낫다고 하긴 힘든것 같아요.
@blackenedgold undefined 값은 이견이 있을 수 있지만 도메인 이론 관점에서는 자연스러운것 같아요.
Rocq과 Lean은 각자 더 깔끔한 면도 있고 지저분한 면이 있는데, 개발환경 같은 공학적인 부분을 제외하면 Rocq은 subject reduction 같은 메타성질이 성립하지만 universe polymorphism은 Lean이 잘 되어 있어요.
@dimenerno 궁금한게 있는데, 마지막 예문은 어떻게 형식화 하나요? 이런게 생각나는데...
(1) (⊢ ∃!x. ϕ(x)) → (⊢ ∀x. ϕ(x) → ∀ a b c. a ≠ b → b ≠ c → c ≠ a → ¬ (a ∈ x ∧ b ∈ x ∧ c ∈ x))
(2) (⊢ ∃!x. ϕ(x)) 이고 M이 T₁의 모델이면, ϕ(x)를 만족하는 x ∈ M 은 |x|≤2 이다.
@kikx Agda는 predicative한 시스템이라 Rocq/Lean의 Prop 같은건 없어요. Predicative & definitionally proof irrelevant한 Prop은 있지만 제약이 많고, HoTT식 h-proposition은 정의할 수 있지만 cubical 모드가 아니면 propositional truncation을 정의 할 수 없어서 별 ��모가 없어요.