1/28
Looks like no tags are added yet.
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai |
|---|
No analytics yet
Send a link to your students to track their progress
What is the fundamental limitation of dynamic testing?
-Executes program on finite subset of inputs to locate flaws
Can prove presence of bugs but cannot guarantee total absence
Formal verification uses mathematical proofs for all valid inputs
What is the Curry-Howard Isomorphism (Propositions-as-Types)?
-Proposition = Type (theorem as type)
Proof = Program/Value/Term (inhabitant of type)
Proof verification = Type checking (t : τ matches P ⊢ A)
What does the Type Inhabitation Problem translate to?
-Finding automated proof for theorem A = searching for program t satisfying type signature τ
Proving t : τ is the verification goal
Links proof search to program synthesis
What is the decidability trade-off in type systems?
-Weak systems (Simply Typed Lambda Calculus): fully decidable but lack recursion, induction, data structures
Rich systems (Calculus of Inductive Constructions): sacrifice automatic general decidability
Gain ability to express complex software safety properties
What is the Simply Typed Lambda Calculus?
-Provided computation without paradoxes
Term and type inference fully decidable (computer could write proofs automatically)
Too weak to prove programs correct (lacked polymorphism, recursion, data types)
What is the Calculus of Inductive Constructions (CIC)?
-Rich type system with dependent, inductive, and higher-order types (1988)
Used by modern provers (Coq/Rocq)
Scales to verify real-world software while expressing advanced mathematics
What is the De Bruijn Criterion?
-Proof assistant's security relies on small, isolated, trusted kernel type-checker
Entire mathematical model depends only on this kernel
Complex automation routines (tactics) are untrusted (outside boundary)
What are the three layers of prover architecture?
-Untrusted UI Layer (user tactics: induction, simpl, destruct)
Elaboration Layer (assembles detailed λ-calculus terms)
Isolated Trusted Core Kernel (stripped-down type-checker enforcing soundness)
How does kernel validation work?
-User tactics gradually construct complete lambda-calculus proof term
Upon Qed, raw proof term passed to kernel
Tiny type-checker analyzes term from first principles; rejects ill-typed terms
What happens with a buggy tactic execution?
-Tactic script fails to resolve goal or breaks
What happens with a flaw inside the core kernel?
-Soundness bug compromises internal type-checker
What is the well-founded termination constraint in provers?
-All recursive processes must execute across well-founded relation
What is Code Extraction?
-Developer specifies and proves core algorithm within prover's type theory
What is Semantic Embedding?
-Write software in standard languages (C, Java) directly
What is the trust boundary for Semantic Embedding?
-Safety depends on precision of embedded formal framework
What is the B-Method?
-Jean-Raymond Abrial's design framework for correct-by-construction systems
What is JVM bytecode verification?
-Automated static analysis pass at class-loading time
What are the three core safety properties enforced by JVM verification?
-Type safety invariance: every instruction receives operands of exact expected type
What are the two approaches for JVM safety?
-Defensive static runtime pass (standard JVM): data-flow analysis at class-loading time
How are structural properties proved for JVM instructions in ITP?
-Write and prove absolute theorems about entire instruction sets
Why was type theory introduced?
-To avoid paradoxes like Russell's Paradox R = {x | x ∉ x} (1901)
What is the problem of manual assertions in Hoare logic?
-Requires humans to guess intermediate assertions to bridge gaps between statements
What is Dijkstra's Weakest Precondition (wp)?
-Complete, deterministic strategy working backward through program structure
What is the Verification Condition (VC)?
-After wp(S,Q) calculated, compiler checks if declared precondition P implies wp(S,Q) (P ⇒ wp(S,Q))
What are the three limitations of standard Hoare logic?
-Pointer aliasing problem: two pointers can point to same address, assignment to *p corrupts property about *q
What is Separation Logic?
-Solved: pointer aliasing and mutable heap allocation problem
What is Rely/Guarantee Reasoning?
-Solved: state-space explosion of shared-memory concurrent systems
What is Dynamic Logic?
-Solved: verification for cyber-physical, continuous, and hybrid systems
What is Stepwise Refinement/Refinement Calculus?
-Correct-by-construction programming model