Skip to content

Instantly share code, notes, and snippets.

@KentaKudo
Created July 10, 2016 05:00
Show Gist options
  • Save KentaKudo/f68bbfadb4169ab1e46519ff399b30dd to your computer and use it in GitHub Desktop.
Save KentaKudo/f68bbfadb4169ab1e46519ff399b30dd to your computer and use it in GitHub Desktop.
Logical Connectives
// 矛盾
func contradiction(p: Bool, q: Bool) -> Bool {
return false
}
// トートロジー
func tautology(p: Bool, q: Bool) -> Bool {
return true
}
// 命題P
func propositionP(p: Bool, q: Bool) -> Bool {
return p
}
// 否定P
func negationOfP(p: Bool, q: Bool) -> Bool {
return !p
}
// 命題Q
func propositionQ(p: Bool, q: Bool) -> Bool {
return q
}
// 否定Q
func negationOfQ(p: Bool, q: Bool) -> Bool {
return !q
}
// 論理積
func conjunction(p: Bool, q: Bool) -> Bool {
return p && q
}
// 否定論理積
func alternativeDenial(p: Bool, q: Bool) -> Bool {
return !p || !q
}
// 論理和
func disjunction(p: Bool, q: Bool) -> Bool {
return p || q
}
// 否定論理和
func jointDenial(p: Bool, q: Bool) -> Bool {
return !p && !q
}
// 非含意
func materialNonInplication(p: Bool, q: Bool) -> Bool {
return p && !q
}
// 否定含意(条件式)
func materialInplication(p: Bool, q: Bool) -> Bool {
return !p || q
}
// 逆非含意
func converseNonImplication(p: Bool, q: Bool) -> Bool {
return !p && q
}
// 逆含意
func converseImplication(p: Bool, q: Bool) -> Bool {
return p || !q
}
// 排他的論理和
func exclusiveDisjunction(p: Bool, q: Bool) -> Bool {
return (p && !q) || (!p && q)
}
// 同値(必要十分条件)
func biconditional(p: Bool, q: Bool) -> Bool {
return (p && q) || (!p && !q)
}
// XOR演算子
infix operator ^^ { associativity left precedence 110 }
func ^^ (lhs: Bool, rhs: Bool) -> Bool {
return exclusiveDisjunction(p: lhs, q: rhs) // または (p && !q) || (!p && q)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment