How to make our system reliable?
Menu
Why we study English?
It is a common language We should know at least one language other than mother language Information in Japanese is rather poor

Various Kind of Computers
Multi CPU Computer GPU Deep Learning Quantum Computer AI
Parallel Computer
It can be simulated by single processor
GPU
It contains large amount of small processor SIMD one instruction handle multiple data
Deep Learning / AI
sometimes called differentiable computation handling large dimensional numeric space Can we rely on it? How to make it reliable? How about Proof system?
What is reliability?
Keeping secrets are very small part of security. System must keep working high availability correctly working System may fail (ex. hardware failure, fire) Backup is important Accessibility Unusable system is the most safe one? compromise ( such as 4 digit password) Human factor Technology itself does not make the system reliable be a reliable person
Specification
Hardware and Software have to satisfies specifications.
What is a specification?
basically logic
Specification is described in logics
P → Q P ∨ Q P ∧ Q ¬ PP and Q can be a formula which has true or false
Satisfiability
P ∨ Q is satisfiable when P = true P ∨ ¬ P is valid P ∧ ¬ P is not satisfiableSat solver can check a formulas satisfiable or not.
Many practically interesting problems can be encoded as a boolean formula.
it is NP-complete, that is every NP hard problem can be translated to SAT.
Specification / Implementation / Execution
Specification in logic Implement in functions Execution result is setit may contains more than 1 million variables, that is, SAT itself is not enough to show the correctness.
Proof system (Natural deduction)
If we use proof system, we may overcome the limitation.However, proofs are usually very difficult and large.
How about computer supported proof system?
A proof
If we have a proof of B from assumption A, we wrote like this.
A ----------- B
Logical operator and inference
Every logical operator has two inference rule, introduction and elimination.
[A] : B A A → B ------------- →-intro ------------------ →-elim A → B B[A] is called discharged A. All assumptions have be discharged in a proof of a formula.
A B A ∧ B A ∧ B ------------- ----------- π1 ---------- π2 A ∧ B A B ⊥ ------------- ⊥-elim A⊥ has no introduction rule. ¬ A is defined as A → ⊥.
example
A → B ∧ B → C → A → Cuse →-intro twice
C --------------------------------------------------- A → C --------------------------------------------------- ((A → B) ∧ (B → C )) → ( A → C )We can use (A → B) ∧ (B → C ) and A as assumptions.
C can be infered from A, A → B, B → C
A A → B ----------------- B B → C --------------------------------------------------- CA → B, B → C are dervied fro (A → B) ∧ (B → C ) using π1,π2 ( ∧-elim ).
(A → B) ∧ (B → C ) ---------------------- A A → B (A → B) ∧ (B → C ) ---------------- ----------------------- B B → C --------------------------------------------------- C --------------------------------------------------- A → C --------------------------------------------------- ((A → B) ∧ (B → C )) → ( A → C )discharge all assumption from →-intro.
[(A → B) ∧ (B → C )]1 ------------------------ [A]2 A → B [ (A → B) ∧ (B → C )]1 ---------------- --------------------------- B B → C --------------------------------------------------- C --------------------------------------------------- 2 A → C --------------------------------------------------- 1 ((A → B) ∧ (B → C )) → ( A → C )
exercise
Lemma1 : A -> ( A -> B ) -> B Lemma2 : B -> A -> (B ∧ A) Lemma3 : ( A ∧ B ) ∧ C → A ∧ (B ∧ C)
Curry Howard Isomorphism
Formula = Type Proof = λ termProofs system is a functional programming language.
Agda on my github
my agda pageShould we create github account?
What we can do in this proof system?
basically all mathematics such as Set Theory
Is this practical?
Not yet
What is going on?
What are we doing?
Continuation based C (CbC) ( more primitive C language ) Implement Operating system on CbC Provide model checking and proof system for CbC