// SPDX-FileCopyrightText: 2025 The Project Pterodactyl Developers // // SPDX-License-Identifier: MPL-2.0 extension Value { func whnf() async -> Value { switch self { case .fun, .record, .shrink, .universeZero, .universeSucc, .universeLub: self case let .shift(neutral: neutral): await neutral.boundary.value().value ?? self } } } extension Value.Type_ { func whnf() async -> Self { switch self { case .funType, .recordType, .universeCodes, .universeType: return self case let .decode(size: size, code: neutral): guard let code = await neutral.boundary.value().value else { return self } return code.decode(size: size) } } }