불법행위 Torts¶
Module: Deontic.Civil.Tort
§750 불법행위의 내용¶
고의 또는 과실로 인한 위법행위로 타인에게 손해를 가한 자는 그 손해를 배상할 책임이 있다.
Act type: TortAct — Layers: '[ContributoryNeg, Base]
data TortFacts = TortFacts
{ tfFault :: Bool -- 고의 또는 과실
, tfUnlawful :: Bool -- 위법성
, tfDamage :: Bool -- 손해 발생
, tfCausation :: Bool -- 인과관계
, tfVictimNeg :: Bool -- 피해자의 과실 (과실상계)
}
Multi-Element Requirement¶
§750 requires all four elements to be present for liability:
- 고의 또는 과실 (fault) — intentional or negligent
- 위법성 (unlawfulness) — the act violates legal norms
- 손해 (damage) — actual harm occurred
- 인과관계 (causation) — the act caused the harm
If any element is missing, the base verdict is Valid (no liability).
If all four are present, the verdict is Void (full liability).
instance Adjudicate TortAct '[Base] where
adjudicate _ facts
| tfFault facts && tfUnlawful facts
&& tfDamage facts && tfCausation facts =
JBase Void ... -- all 4 elements → liability
| otherwise =
JBase Valid ... -- missing element → no liability
§763→§396 과실상계¶
§763: 제396조의 규정은 불법행위로 인한 손해배상에 준용한다.
§396: 채무불이행에 관하여 채권자에게 과실이 있는 때에는 법원은 손해배상의 책임 및 그 금액을 정함에 이를 참작하여야 한다.
The ContributoryNeg layer implements contributory negligence reduction:
instance Adjudicate TortAct rest
=> Adjudicate TortAct (ContributoryNeg ': rest) where
adjudicate act facts
| tfVictimNeg facts -- victim had negligence
, let prev = adjudicate @_ @rest act facts
, verdict prev == Void = -- AND liability exists
JOverride prev Voidable ... -- reduce to Voidable
| otherwise =
JDelegate (adjudicate @_ @rest act facts)
Verdict-Conditional Override
The ContributoryNeg layer only fires when both conditions hold:
- The victim was negligent (
tfVictimNeg facts) - The base verdict is
Void(liability established)
If there's no liability to begin with (Valid), victim negligence is
irrelevant — you can't reduce zero liability. This is the
verdict-conditional override pattern, also used in §390 (creditor
defense) and §580② (buyer knowledge).
Reasoning Chain Example¶
For a traffic accident where the tortfeasor is liable but the victim was also negligent:
let facts = TortFacts True True True True True -- all elements + victim neg
j = query (TortAct victim tortfeasor actId) facts
The judgment structure:
JOverride -- ContributoryNeg: victim neg
(JBase Void (ArticleRef "민법" 750 ...) ...) -- Base: all 4 elements → Void
Voidable
(ArticleRef "민법" 396 ...)
"피해자에게도 과실이 있으므로 과실상계에 의하여 손해배상 책임이 감경된다."
Steps:
Applied— §750: all elements present, verdictVoidOverridden— §396: victim negligence reduces toVoidable